package in.rob.client.dialog; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import java.util.ArrayList; import in.controller.handler.PostDialogResponseHandler; import in.lib.Constants; import in.lib.manager.APIManager; import in.lib.utils.Debug; import in.lib.utils.Views.Injectable; import in.model.DraftPost; import in.rob.client.dialog.base.InputPostDialog; @Injectable public class NewPostDialog extends InputPostDialog { private boolean resend = false; @Override public void initialiseDraft() { setDraft(new DraftPost()); } @Override public void retrieveArguments(Bundle args) { super.retrieveArguments(args); if (args != null) { if (args.containsKey(Constants.EXTRA_DRAFT_POST)) { setDraft((DraftPost)args.get(Constants.EXTRA_DRAFT_POST)); } if (args.containsKey(Intent.EXTRA_STREAM)) { Object stream = args.get(Intent.EXTRA_STREAM); ArrayList<Uri> uris; if (stream instanceof String) { uris = new ArrayList<Uri>(); uris.add(Uri.parse(String.valueOf(stream))); } else if (stream instanceof Uri) { uris = new ArrayList<Uri>(); uris.add((Uri)stream); } else if (stream instanceof ArrayList) { uris = (ArrayList<Uri>)stream; } else { // invalid extra passed Debug.out("ERROR: Invalid extras passed to share intent %s", stream.getClass()); finish(); return; } for (Uri uri : uris) { addImage(uri); } } if (args.containsKey(Intent.EXTRA_TEXT)) { getDraft().setPostText(args.getString(Intent.EXTRA_TEXT)); } if (args.containsKey(Constants.EXTRA_SEND)) { resend = true; onPositiveButtonClick(null); } } } @Override public void onPositiveButtonClick(View view) { if (!resend) { super.onPositiveButtonClick(view); } else { finish(); } if (!TextUtils.isEmpty(getDraft().getPostText())) { getDraft().setImageCount(getDraft().getImages().size()); APIManager.getInstance().postPost(getContext(), (DraftPost)getDraft(), new PostDialogResponseHandler(getContext(), (int)(getDraft().getDate() / 1000L)) { @Override public void onFinish(boolean failed) { super.onFinish(failed); if (!failed) { getDraft().delete(); } } }); } } }